###### 【 1 】############################## 基础配置 ##########################################
########################################################################################
import os


def get_env(name):
    try:
        import blueprints.env_debug as debug
        import blueprints.env_default as default
    except:
        debug, default = None
    if os.environ.get(name):
        return os.environ.get(name)
    if method_DEBUG() and hasattr(debug, name):
        return debug.__getattribute__(name)
    if hasattr(default, name):
        return default.__getattribute__(name)
    return None


def method_DEBUG():
    if os.environ.get("DEBUG")=="false":
        return False
    if os.path.exists("DEBUG"):
        return True
    return False


def create_app():
    ###### 【 1 】##############################  1.app初始化 #########################################
    from flask import Flask, request
    app = Flask(__name__)
    PROJECT_ROOT = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
    LOG_FOLDER = os.path.join(PROJECT_ROOT, 'log')
    if not os.path.exists(LOG_FOLDER):
        os.mkdir(LOG_FOLDER)
    app.config.from_mapping({
        "APP_NAME": "main",
        "PROJECT": "app",
        "PROJECT_ROOT": PROJECT_ROOT,
        "LOG_FOLDER": LOG_FOLDER,
        "SECRET_KEY": os.urandom(24),
    })

    @app.before_request
    def before_request():
        if request.blueprint is not None:
            bp = app.blueprints[request.blueprint]
            if bp.jinja_loader is not None:
                newsearchpath = bp.jinja_loader.searchpath + app.jinja_loader.searchpath
                app.jinja_loader.searchpath = newsearchpath
                # 以下为2016-03-11日更新：
                # 如果访问非蓝图模块或蓝图中没有指定template_folder,默认使用app注册时指定的全局template_floder.
            else:
                app.jinja_loader.searchpath = app.jinja_loader.searchpath[-1:]
        else:
            app.jinja_loader.searchpath = app.jinja_loader.searchpath[-1:]

    return app


app = create_app()
from flask_socketio import SocketIO
socketio = SocketIO(app, async_mode="threading")
##### 【 2 】##############################  5.注册蓝图 #########################################
import module_load

module_load.module_load()
################################################################################################
